package br.com.pattern.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import br.com.pattern.model.Venda;


public class VendaDao extends GenericDao{

	protected VendaDao(ConnectionDataBaseGeneric connectionDataBaseGeneric) {
		super(connectionDataBaseGeneric);
	}
	
	public void salvar(Venda venda){
		String insert = "INSERT INTO vendas(data, hora, valor_total, quantidade, id_produto, id_categoria_produto, id_vendedor) VALUES(?,?,?,?,?,?,?)";

		save(insert, new java.sql.Date(venda.getData().getTimeInMillis()), venda.getHora(), venda.getValor_total(), venda.getQuantidade(), venda.getIdProduto(), venda.getIdCategoriaProduto(), venda.getIdVendedor() );
	}

	public void alterar(Venda venda){

		String update = "UPDATE vendas SET data=?, hora=?, valor_total=?," +
				"quantidade=?, id_produto=?, id_categoria_produto, id_vendedor WHERE id=?";

		update(update, new java.sql.Date(venda.getData().getTimeInMillis()), venda.getHora(), venda.getValor_total(), venda.getQuantidade(), venda.getIdProduto(), venda.getIdCategoriaProduto(), venda.getIdVendedor(), venda.getId());
	}

	public void excluir(Venda venda){

		String delete = "DELETE FROM vendas WHERE id = ?";

		delete(delete, venda.getId());
	}

	public List<Venda> listaProdutos(){

		List<Venda> lista = new ArrayList<Venda>();

		String select = "SELECT * FROM vendas";

		try{
			
			PreparedStatement pstmt = getConnection().prepareStatement(select);
			ResultSet rs = pstmt.executeQuery();

			while(rs.next()){
				Venda venda = new Venda();

				venda.setId(rs.getLong("id"));
				
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("data"));
				venda.setData(data);
				
				venda.setHora(rs.getString("hora"));
				venda.setValor_total(rs.getDouble("valor_total"));
				venda.setQuantidade(rs.getInt("quantidade"));
				venda.setIdProduto(rs.getLong("id_produto"));
				venda.setIdCategoriaProduto(rs.getLong("id_categoria_produto"));
				venda.setIdVendedor(rs.getLong("id_vendedor"));

				lista.add(venda);
			}

			rs.close();
			pstmt.close();
			
		}catch(SQLException e){
			e.printStackTrace();
		}

		return lista;
	}
}
